using System.Threading;

namespace MalwareMultiScan.Backends.Services.Interfaces
{
    /// <summary>
    /// Process runner.
    /// </summary>
    public interface IProcessRunner
    {
        /// <summary>
        /// Run process till completion.
        /// </summary>
        /// <param name="path">Path to binary.</param>
        /// <param name="arguments">Arguments.</param>
        /// <param name="token">Cancellation token.</param>
        /// <param name="standardOutput">Standard output of a process.</param>
        /// <param name="standardError">Standard error of a process.</param>
        /// <returns>Exit code.</returns>
        int RunTillCompletion(string path, string arguments, CancellationToken token,
            out string standardOutput, out string standardError);
    }
}